package com.sms.graduate.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sms.graduate.entity.SmsUser;

import java.util.List;


public interface SmsUserService extends IService<SmsUser> {

    /**
     * 根据用户名和密码查询用户信息
     * @param userCode
     * @param password
     * @return
     */
    SmsUser userLogin(String userCode,String password);

    /**
     * 根据学号查询用户
     * @param usercode
     * @return
     */
    SmsUser selectUserByCode(String usercode);


    /**
     * 根据班级查询所有学生
     */
    List<SmsUser> selectStudentByClass(String userClass);

    /**
     * 查询所有学生
     */
    List<SmsUser> selectAllStudent();

    /**
     * 更新学生信息
     */
    Boolean updateStudentInfo(SmsUser student);

    /**
     * 增加学生信息
     */
    Boolean addStudentInfo(SmsUser student);

    /**
     * 查询班主任
     * @param courseClass
     * @return
     */
    String selectTeacher(String courseClass);

    /**
     * 查寻学号
     * @param smsUser
     * @return
     */
    List<SmsUser> queryUsers(SmsUser smsUser);


    /**
     * 根据专业，班级，角色  查询最大学号
     * @param userMajor
     * @param userClass
     * @param role
     * @return
     */
    String usercodeByClass(String userMajor,String userClass,String role);


    /**
     * 更具入职年月生成老师工号
     * @param year
     * @param mouth
     * @return
     */
    String usercodeByDate(String year,String mouth);

    /**
     * 查询老师信息
     * @return
     */
    List<SmsUser> queryTeacher(SmsUser smsUser);

    /**
     * 查询没有入住宿舍的学生
     * @return
     */
    List<SmsUser> noHostelOfStudent();

    /**
     * 更新用户的宿舍信息
     * @param userHostel
     * @param usercode
     * @return
     */
    Boolean updateUserHostel(String userHostel,String usercode);

    /**
     * 查询某宿舍的学生
     * @param userHostel
     * @return
     */
    List<SmsUser> queryHostelPeople(String userHostel);

    Page<SmsUser> selectClassInfo(SmsUser smsUser);

    List<SmsUser> queryMajorClass(SmsUser smsUser);

    /**
     * 根据 userCode 修改个人信息
     * @param smsUser
     * @return
     */
    boolean updateUserInfo(SmsUser smsUser);

    /**
     * 通过用户信息和要查询的学科获取老师学号
     * @return
     */
    List<String> getTeacherCodeByUserInfo(SmsUser smsUser,String remark);
}

